#pragma once

// Our custom vertex type
struct TEXTUREVERTEX
{
	FLOAT x, y, z;
	FLOAT rhw;
	DWORD color;
	FLOAT tu, tv;   // The texture coordinates
};

#define D3DFVF_TEXTUREVERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1)

struct SCREENBLENDVERTEX
{
	FLOAT x, y, z;
	FLOAT rhw;
	DWORD color;
	FLOAT tu, tv;   // The texture coordinates
	FLOAT tuBack, tvBack;	//The back texture coordinates
};
#define D3DFVF_SCREENBLENDVERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1 | D3DFVF_TEX2)

struct POINTCOLORVERTEX
{
	FLOAT x, y, z;
	DWORD color;
};
#define D3DFVF_POINTCOLORVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE )


struct POINTVERTEX
{
	FLOAT x, y, z;
};

struct POINTVERTEXNORMAL
{
	FLOAT x, y, z;
	FLOAT nx,ny,nz;
};

//--------------------------------------------------------------------------------------
// This is the vertex format used with the quad during post-process.
struct PPVERT
{
	float x, y, z, rhw;
	float tu, tv;       // Texcoord for post-process source
};
#define D3DFVF_PPVERT (D3DFVF_XYZRHW | D3DFVF_TEX1)


#define D3DFVF_SCREENSPRITEVERTEX	(D3DFVF_XYZRHW | D3DFVF_PSIZE | D3DFVF_DIFFUSE)
struct SCREENSPRITEVERTEX
{
	float x, y, z, rhw, fSize;
	DWORD color;
};